package test02;

//力扣复写零
// 给你一个长度固定的整数数组 arr ，请你将该数组中出现的每个零都复写一遍，并将其余的元素向右平移。
//注意：请不要在超过该数组长度的位置写入元素。请对输入的数组 就地 进行上述修改，不要从函数返回任何东西。
class Solution {
    public void duplicateZeros(int[] arr) {
        //确定最后一个录入的数字下标
        int i = 0 ; int cut = 0;int len = arr.length;
        while(cut < len){
            if(arr[i] != 0){
                cut++;
                i++;
            }else{
                cut += 2;
                i++;
            }
        }
        i = i - 1;//最后一个录入的数字下标

        //最后一个录入的数字是0的细节处理
        if(cut > len){
            arr[len - 1] = 0;
            i--;
            len--;
        }
        //从数组最后开始录入新数据
        int j = len - 1;
        while(j >= 0){
            if(arr[i] != 0){
                arr[j] = arr[i];
                j--;
                i--;
            }else{
                arr[j] = 0;
                j--;
                arr[j] = 0;
                j--;
                i--;
            }
        }
    }
}
